/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package xmlaufgabe7;

import java.util.logging.Level;
import java.util.logging.Logger;
import model.LoaderModel;
import views.ContentPanelView;
import controller.DownloadListener;
import controller.LoadListener;
import java.io.IOException;
import java.net.MalformedURLException;
import javax.swing.JFrame;

/**
 * Das Programm bietet die Funktionalitaet, auf ein im Internet liegendes XML-
 * Dokument zuzugreifen um wichtige Daten daraus zu extrahieren. Aus diesen Daten
 * wird eine Uebersicht erstellt, bei der mit Hilfe der Maus gewaehlt werden kann,
 * welche vorhandenen Dateien der Benutzer herunterladen moechte. <br /><br />
 * Der Downloadvorgang wird separat fuer alle Dateien angezeigt.
 * 
 * @author s0527676
 */
public class DownloaderMain {

    private DownloaderMain(){};

    /**
     * Erstellt den initial-Frame sowie alle benoetigten Komponenten des MVC-Patterns
     * und verknuepft diese.
     * 
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            JFrame frame = new JFrame("Downloader");
            //MVC
            LoaderModel loaderModel = new LoaderModel(); //model
            LoadListener loadListener = new LoadListener(loaderModel); //controller
            DownloadListener downloadListener = new DownloadListener(loaderModel.getDataModelList());
            ContentPanelView content = new ContentPanelView(loadListener, downloadListener); //view
            loadListener.setContentView(content);
            downloadListener.connectContentPanelView(content);
            
            loaderModel.addObserver(content);

            //Init Frame
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
            frame.setContentPane(content);
            frame.pack();
            frame.setMinimumSize(frame.getSize());
            frame.setVisible(true);
        } catch (MalformedURLException ex) {
            Logger.getLogger(DownloaderMain.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(DownloaderMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
